﻿#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdio.h>
unsigned char i = 0;
//首先看见了i是无符号整数
//而char的类型的无符号整数，最大值
//所以应该是死循环
//int main()
//{
//	for (i = 0; i <= 255; i++)
//	{
//		printf("hello world\n");
//	}
//	return 0;
//}

int main()
{
	int n = 9;
	float* pFloat = (float*)&n;
	//float、double、long double类型。
	//第一个因为n为整形并且赋值为9，所以结果自然是9
	printf("n的值为：% d\n", n);
	//这个是在解引用pfloat
	//这不该是要通过计算来得到结果吗，喔喔，不对存储的值仍然是整形但以浮点数的形式打印
	//故输出结果应该是9.000000
	printf("*pFloat	的值为：% f\n", *pFloat);

	*pFloat = 9.0f;
	//ok，现在存的是浮点型了
	//先将9转化为二进制，1001
	//根据754标准V = （-1）^S(1或0)M*2^E
	//M表示数字转变为二进制后仅在小数点前面留个一，后后几位E就是几
	//例5，  101 ，1.01*2^2，所以E就是2，M就是1.01，但因为，要加一个中间数，所以E的值变成了了129
	//double类型的中间数是1023，float类型的中间数是127
	//在32为环境下，E用八位来存储，M用23位来存储（比特位哈），第一位用来存储S
	//在64为环境下，E用11位来存储，M用52位来存储（比特位哈），第一位用来存储S
	//所以来看这道题
	//9的二进制位是1001，1.001，E为3，S为1，一般只存储小数点后面的二进制数字，M为001要用零补齐
	//(−1)S表⽰符号位，当S = 0，V为正数；当S = 1，V为负数
//	所以写出来就是1 10000011 001000000000000000000000
	//01000011001000000000000000000000

	printf("n的值为：% d\n", n);//打印出来就是

	printf("*pFloat的值为：% f\n", *pFloat);
	return 0;
}